// @flow
import React, { Component } from 'react'
import { Form, Select } from 'antd'
import universalFetch, { handleFetchError } from 'store/modules/fetch'
const FormItem = Form.Item
const Option = Select.Option
const formItemLayout = {
  labelCol: {
    xs: { span: 24 },
    sm: { span: 6 }
  },
  wrapperCol: {
    xs: { span: 24 },
    sm: { span: 14 }
  }
}
type Props = {
  form: Object
}
type State = {
  pointData: Array<Object>
}
class PointModal extends Component {
  props: Props
  state: State
  getPointId: Function
  constructor (props: Props) {
    super(props)
    this.state = {
      pointData: []
    }
    this.getPointId = this.getPointId.bind(this)
  }
  componentWillMount () {
    this.getPointId()
  }
  getPointId () {
    universalFetch(`${__SERVICE_API__}device/templates/monitors/points`)
    .then((res) => res.json())
    .then((json) => {
      if (json.code !== 200000) {
        throw new Error(JSON.stringify({ code: json.code, message: json.message }))
      }
      this.setState({
        pointData: json.result
      })
    })
    .catch((error) => {
      handleFetchError(error)
      console.error(error)
    })
  }
  handleSubmitComponent () {}
  render () {
    const { getFieldDecorator } = this.props.form
    const { pointData } = this.state
    return (
      <Form onSubmit={this.handleSubmitComponent}>
        <FormItem {...formItemLayout} label='传感器类型' hasFeedback>
          {getFieldDecorator('pointId', {
            rules: [
              { required: true, message: '请填写传感器类型' }
            ]
          })(
            <Select showSearch
              filterOption={(input, option) => {
                return option.props.children.indexOf(input) >= 0
              }} placeholder='请填写传感器类型'>
              {
                pointData.map((d, i) => {
                  return <Option key={i} value={d.id}>{d.sensorName}</Option>
                })
              }
            </Select>
          )}
        </FormItem>
      </Form>
    )
  }
}

export default Form.create()(PointModal)
